Squeeze
返回删除指定axis中大小为1的维度后的Tensor。由于该算子仅改变张量形状,因此其DSP算子的作用是将数据从输入张量完整拷贝到输出张量。
- 输入:
src - 输入地址
elem_num - 需要拷贝的元素个数。
core_mask - 核掩码(仅共享存储版本使用)。
- 输出:
dst - 输出地址。
- 支持平台:
FT78NEMT7004
备注
FT78NE 支持int8, int16, int32, fp32, fp64, cplx64, cplx128
MT7004 支持fp16, fp32, int16, int32, cplx64
共享存储版本:
-
void i8_squeeze_s(int8_t *src, int8_t *dst, size_t elem_num, int core_mask)
-
void i16_squeeze_s(int16_t *src, int16_t *dst, size_t elem_num, int core_mask)
-
void i32_squeeze_s(int32_t *src, int32_t *dst, size_t elem_num, int core_mask)
-
void fp_squeeze_s(float *src, float *dst, size_t elem_num, int core_mask)
-
void hp_squeeze_s(float16 *src, float16 *dst, size_t elem_num, int core_mask)
-
void c64_squeeze_s(float *src, float *dst, size_t elem_num, int core_mask)
-
void c128_squeeze_s(double *src, double *dst, size_t elem_num, int core_mask)
C调用示例:
1//MT7004示例
2void main(){
3 int core_mask = 0b1111; // 测试单核时核掩码设置为0b0001即可
4 float* src = (float*)0x88000000;
5 float* dst = (float*)0x98000000;
6 int shape[3] = {1, 10, 10};
7 size_t elem_num = shape[0] * shape[1] * shape[2];
8 fp_squeeze_s(src, dst, elem_num, core_mask);
9}
私有存储版本:
-
void i8_squeeze_p(int8_t *src, int8_t *dst, size_t elem_num)
-
void i16_squeeze_p(int16_t *src, int16_t *dst, size_t elem_num)
-
void i32_squeeze_p(int32_t *src, int32_t *dst, size_t elem_num)
-
void fp_squeeze_p(float *src, float *dst, size_t elem_num)
-
void hp_squeeze_p(float16 *src, float16 *dst, size_t elem_num)
-
void c64_squeeze_p(float *src, float *dst, size_t elem_num)
-
void c128_squeeze_p(double *src, double *dst, size_t elem_num)
C调用示例:
1//MT7004示例
2void main(){
3 float16* src = (float16*)0x10000000;
4 float16* dst = (float16*)0x10020000;
5 int shape[3] = {1, 10, 10};
6 size_t elem_num = shape[0] * shape[1] * shape[2];
7 hp_squeeze_p(src, dst, elem_num);
8}